# 1.定义一个列表，用户存储用户数据
user_data = [
    {'account': '123', 'password': '1234', 'name': '张山', 'balance': '30000'},
    {'account': '132', 'password': '1234',
     'name': '李巳', 'balance': '80000'},
    {'account': '213', 'password': '1234',
     'name': '王午', 'balance': '10000000'},
    {'account': '231', 'password': '1234',
     'name': '许壹', 'balance': '340000'},
    {'account': '321', 'password': '1234',
     'name': '何尔', 'balance': '50000'},
    {'account': '312', 'password': '1234',
     'name': '刘齐', 'balance': '1000000'},
]
# 系统初始界面，提示登录
print("=" * 15, "欢迎使用!", "=" * 15)
# 获取用户输入的账户信息
s_account = input("请输入您的银行账户：")
# 获取用户输入的密码信息
s_password = input("请输入您的账户密码：")

'''
login(account,password,u_data)函数用于判断用户登录输入信息是否正确
account字符串参数，表示用户输入的账户信息
password字符串参数，表示用户输入的密码信息
u_data列表，表示系统中已存在的用户数据信息
return u_id返回登录信息匹配的列表下标
'''


def login(account, password, u_data):
    # 循环遍历用户数据信息，以判断输入信息是否正确
    for x in range(len(user_data)):
        # 如果用户输入的账户和密码同时正确则登录成功，获取此时的列表下标，并跳出循环
        if u_data[x]['account'] == account and u_data[x]['password'] == password:
            print("登录成功！")
            u_id = x
            break
    # 否则提示账户或密码错误，返回值为空字符串，用于标识未登录
    else:
        print("账户或密码错误！！！")
        u_id = ""
    # 返回u_id
    return u_id


# 调用login()函数，用于登录时信息判断，并接受函数执行的返回值
v = login(s_account, s_password, user_data)


# 如果函数执行返回值是列表下标，登录成功，进入系统，如果返回值是空字符串，登录不成功，无法进入系统
while str(v):
    # 打印一个简易取款机系统操作界面
    print("=" * 13, user_data[v]['name'], "欢迎您!", "=" * 14)
    print("{0:5} {1:14} {2:10}".format("  ", "1.查询余额", "2.取款"))
    print("{0:5} {1:14} {2:10}".format("  ", "3.现金存款", "4.退出"))
    print("=" * 40)
    # 获取当前登录用户的存款金额
    balance = int(user_data[v]['balance'])
    # 提示用户输入操作选项
    key = input("请输入功能选项：")
    # 如果用户输入1，则进行余额查询
    if key == "1":
        # 打印当前用户的存款余额
        print("当前账户余额：{:<10}".format(balance))
        # 提示用户按键返回
        input("按回车键返回：")
    # 如果用户输入2，则进行取款操作
    elif key == "2":
        # 获取用户输入的取款金额
        q = input("请输入取款金额：")
        # 判断取款金额是否大于当前账户余额，如果是则提示余额不足，并显示当前余额
        if balance < int(q):
            print("余额不足，当前余额：", user_data[v]['balance'])
        # 否则进行取款，并计算取款后的账户余额
        else:
            balance -= int(q)
            # 更新列表中当前用户的账户余额
            user_data[v]['balance'] = balance
        # 提示用户按键返回
        input("按回车键返回：")
    # 如果用户输入3，则进行存款操作
    elif key == '3':
        # 提示用户输入存款金额
        c = input("请输入存款金额：")
        # 计算存款后的账户余额
        balance += int(c)
        # 更新列表中当前用户的账户余额
        user_data[v]['balance'] = balance
        # 提示存款成功
        print("存款成功！")
        # 提示用户按键返回
        input("按回车键返回：")
    # 如果用户输入4，则退出系统，跳出循环
    elif key == '4':
        # 退出系统的提示信息
        print("=" * 16, "再见！", "=" * 17)
        break
    # 如果用户输入其他内容，则提示无效输入，并返回系统
    else:
        print("无效的键盘输入！！！")
